#include"my.h"
//客户端
void history_wrod(int sockfd)
{
	MSG msg = {0};
	msg.type = 4;
	send(sockfd,&msg,sizeof(MSG),0);
	//4--->查询历史单词
	while(1)
	{
		recv(sockfd,&msg,sizeof(MSG),0);
		if(msg.type==4)
		{
			printf("%s %s",msg.name,msg.data);
		}
		else
		{
			printf("历史记录展示完毕\n");
			return;
		}
	}
}
void find_word(int sockfd)
{
	MSG msg = {0};
	printf("请输入要查询的单词:");
	scanf("%s",msg.name);
	msg.type = 3;//3--->查单词
	send(sockfd,&msg,sizeof(MSG),0);
	//等待接受
	recv(sockfd,&msg,sizeof(MSG),0);

	if(msg.type == 1)
	{
		printf("%s\n",msg.data);
	}
	else
	{
		printf("未查到\n");
		return;
	}
}

//登录
void login_sys(int sockfd)
{
	MSG msg = {0};
	msg.type = 2;  //type=2--->登录
	printf("请输入登录账号：");
	scanf("%s",msg.name);
	printf("请输入登录密码：");
	scanf("%s",msg.data);
	//发出请求等待接受
	send(sockfd,&msg,sizeof(MSG),0);
	//等待反馈，进入下一步处理
	recv(sockfd,&msg,sizeof(MSG),0);
	if(msg.type == -1)
	{
		printf("账号密码有误\n");
		return;
	}
	else
	{
		printf("登录成功\n");
		while(1)
		{
        	printf("\n/////////////////////////////////////////////////////");
       	 	printf("\n*****************************************************\n");
        	printf("*             欢　迎　使　用　电　子　词  　        *");
   			printf("\n*****************************************************\n");
  	  		printf("\n*  1.查询单词  2.查询历史单词  3.返回上一级  4.退出 *\n");
    		printf("\n*****************************************************\n");
    		printf("/////////////////////////////////////////////////////\n");
    		printf("\n请 输 入 您 的 选 择:\n\n");
			int choich;
			scanf("%d",&choich);
			if(choich==1)
			{
				//查询，交互
				find_word(sockfd);
			}
			else if(choich==2)
			{
				history_wrod(sockfd);
			}
			else if(choich==3)
			{
				return;
			}
			else if(choich==4)
			{
				exit(0);
			}
			else
			{
				continue;
			}
		}
}
}
//(choich==1):注册
void register_sys(int sockfd)
{
	MSG msg = {0};
	msg.type = 1;
	//注册
	printf("请输入注册账号：");
	scanf("%s",msg.name);
	printf("请输入注册密码：");
	scanf("%s",msg.data);
	//发出去
	send(sockfd,&msg,sizeof(MSG),0);
	//等待接受服务器发来的消息
	//等待服务器返回注册信息（成功／失败？）
	memset(&msg,0,sizeof(MSG));  //清空
	recv(sockfd,&msg,sizeof(MSG),0);  //接收
	if(msg.type == 0)
	{
		printf("注册成功\n");
		return;
	}
	else
	{
		printf("注册失败\n");
		return;//返回界面（也可递归register_sys():注册失败一直注册）
	}

}
int main(int argc, const char *argv[])
{
	int sockfd = socket(AF_INET,SOCK_STREAM,0);
	if(sockfd == -1)
	{
		perror("socket failed\n");
		exit(-1);
	}

	struct sockaddr_in server_addr = {0};
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(7788);
	server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

	connect(sockfd,(struct sockaddr*)&(server_addr),sizeof(server_addr));

	while(1)
	{
		printf("******************************\n");
		printf("**********电子词典项目********\n");
		printf("**1.注册***2.登录****3.退出***\n");
		printf("******************************\n");
		printf("*********请输入您的选择*******\n");

		int choich;
		scanf("%d",&choich);

		switch(choich)
		{
			case 1:
				register_sys(sockfd);
				break;
			case 2:
				login_sys(sockfd);
				break;
			case 3:
				close(sockfd);
				exit(0);
		}
	}

}
